package com.Alice;


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Address {
	public static final String KEY_1 ="TFNBZ-5KQ36-T24SB-MGRKL-J3RZS-NFB3R";
	/**
	 * 返回输入地址的经纬度坐标
	 * key lng(经度),lat(纬度)
	 */
	public static Map<String,String> getGeocoderLatitude(String address){
		BufferedReader in = null;
		try {
			//将地址转换成utf-8的16进制
			address = URLEncoder.encode(address, "UTF-8");
			//找坐标
			URL tirc = new URL("https://apis.map.qq.com/ws/geocoder/v1/?address="+address+"&output=json&key="+KEY_1);
			in = new BufferedReader(new InputStreamReader(tirc.openStream(),"UTF-8"));
			String res;
			StringBuilder sb = new StringBuilder("");
			while((res = in.readLine())!=null){
				sb.append(res.trim());
				System.out.println(res.trim());
			}
			String str = sb.toString();
			Map<String,String> map = null;
			if(!str.equals("")&&str!=null){
				int lngStart = str.indexOf("lng\":");
				int lngEnd = str.indexOf(",\"lat");
				int latEnd = str.indexOf("},\"ad_info");
				if(lngStart > 0 && lngEnd > 0 && latEnd > 0){
					String lng = str.substring(lngStart+6, lngEnd);
					String lat = str.substring(lngEnd+8, latEnd);
					map = new HashMap<String,String>();
					map.put("lng", lng);
					map.put("lat", lat);
					return map;
				}
			}
		}catch (Exception e) {
			e.printStackTrace();
		}finally{
			try {
				in.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return null;
	}

	public static void address(List<StoreInfo> storeList) {
		// 对这个list进行遍历
		for (StoreInfo Info : storeList) {
			// 通过这个Bean中的地址获取到地址的坐标
			Map<String, String> json = Address.getGeocoderLatitude(Info.getAddressName());
			// 把获取到的坐标设置给次门店
			Info.setLongitude(json.get("lng"));
			Info.setLatitude(json.get("lat"));
			System.out.println(json.get("lng"));
			System.out.println(json.get("lat"));
		}
	}

	public static void main(String args[]){
		//这个list是提供的一组地址，泛型对象是门店Bean，因为每一个地址对应一个门店
		List<String> Addresslist = new ArrayList<String>();
		List<StoreInfo> storeList = new ArrayList<StoreInfo>();
		Addresslist.add("广东省广州市番禺区番禺市桥清河东路37号（何贤医院对面）");
		Addresslist.add("广东省广州市天河区中山大道中238号");
		Addresslist.add("广东省广州市番禺区洛溪吉祥北道路193号之二（地铁洛溪站附近）");
		for(String address : Addresslist) {
			StoreInfo storeInfo = new StoreInfo();
			storeInfo.setAddressName(address);
			storeList.add(storeInfo);
		}
		address(storeList);
	}


}